Secure communications over a public computer network, e.g., the Internet, may be performed using encryption keys to provide confidential communications and digital certificates to verify identifies of the sending and/or receiving parties. For example, the Hypertext Transfer Protocol Secure (HTTPS) protocol provides authentication of a web site or associated web server with which a user is communicating by verifying the web server's digital certificate. A digital certificate, which is issued by a certificate authority, certifies ownership of a public key by a named subject of the certificate, e.g., a web server, and a user's web browser may rely upon the certificate to verify the identity of the web server. The HTTPS protocol also provides bidirectional encryption of communications between the user's web browser and the web server. The user's web browser may use the public key of the web server to encrypt communication that can only be decrypted and read with the private key, which may be held by a service provider that owns the web server.
In the above example, third party systems, e.g., web browsers, service providers, and certificate authorities, are needed to generate, store, and/or apply the digital certificates and encryption keys used to provide ongoing communication security. In order to provide temporary communication security directly between two computing devices, the two computing devices typically need to agree on a common method to be used for secure communication. For example, the two computing devices may need to agree upon a temporary shared symmetric encryption key to be used by each of the computing devices to encrypt communications. The two computing may be any of a wide range of devices, including laptop or desktop computers, tablet computers, so-called “smart” phones, “smart” pads, “smart” watches, or other personal digital appliances equipped for wired or wireless communication.